Function.prototype.method = function (name, func) {
    this.prototype[name] = func;
    return this;
};

Array.dim = function (dimension, initial) {
    var a = [], i;

    for (i = 0; i < dimension; i += 1) {
        a[i] = initial;
    }
    return a;
};

// 创建一个包含10个0的数组
var myArray = Array.dim(10, 0);

// 元素为数组的数组
var matrix = [
    [0, 1, 2],
    [3, 4, 5],
    [6, 7, 8]
];
matrix[2][1];

// 注意：Array.dim(n, []) 在这里不能工作
// 如果使用它，每个元素都指向同一个数组的引用，那后果不堪设想
for (i = 0; i < n; i += 1) {
    my_array[i] = [];
}

Array.matrix = function (m, n, initial) {
    var a, i, j, mat = [];

    for (i = 0; i < m; i += 1) {
        a = [];
        for (j = 0; j < n; j += 1) {
            a[j] = initial;
        }
        mat[i] = a;
    }

    return mat;
};

// 构造一个用 0 填充的 4X4 矩阵
var myMatrix = Array.matrix(4, 4, 0);

// 用来构造一个单位矩阵的方法。
Array.identity = function (n) {
    var i, mat = Array.matrix(n, n, 0);
    for (i = 0; i < n; i += 1) {
        mat[i][i] = 1;
    }
    return mat;
};
myMatrix = Array.identity(4);